01-CloudWatch-대시보드구축

CloudWatch 대시보드 구축

목표

Week 3.5에서 구축한 고가용성 웹 서비스의 모든 구성요소를 통합 모니터링할 수 있는 CloudWatch 대시보드를 만들고, 핵심 알람을 설정해봅시다.

왜 모니터링이 필요한가?

현재 상황 (모니터링 없음)

문제 발생 → 사용자 신고 → 원인 조사 → 해결
- 사후 대응 방식
- 긴 장애 시간
- 원인 파악 어려움

모니터링 구축 후

문제 예측 → 자동 알림 → 즉시 대응 → 빠른 해결
- 사전 예방 방식
- 최소 장애 시간
- 명확한 원인 파악

모니터링할 주요 지표

ALB (Application Load Balancer)

EC2 (Web/WAS 서버)

RDS (데이터베이스)

1단계: CloudWatch 대시보드 생성

대시보드 만들기

  1. AWS 콘솔CloudWatch 검색 및 클릭
  2. 왼쪽 메뉴에서 대시보드 클릭
  3. 대시보드 생성 버튼 클릭
  4. 대시보드 이름: WebApp-Production-Dashboard
  5. 생성 클릭

대시보드 레이아웃 계획

[ ALB 요청 수 ]  [ ALB 응답시간 ]  [ 정상 서버 수 ]
[ Web CPU ]      [ WAS CPU ]       [ RDS CPU ]
[ DB 연결 수 ]   [ DB 지연시간 ]   [ 에러율 ]

2단계: ALB 모니터링 위젯 추가

위젯 1: ALB 요청 수

  1. 위젯 추가선 그래프 선택
  2. 메트릭 추가:
    • 네임스페이스: AWS/ApplicationELB
    • 메트릭 이름: RequestCount
    • LoadBalancer: webapp-alb 선택
  3. 통계: 합계
  4. 기간: 5분
  5. 위젯 제목: ALB 요청 수 (5분간)
  6. 위젯 생성

위젯 2: ALB 응답 시간

  1. 위젯 추가선 그래프 선택
  2. 메트릭: ApplicationELB → TargetResponseTime
  3. LoadBalancer: webapp-alb 선택
  4. 통계: 평균
  5. 위젯 제목: 평균 응답 시간
  6. Y축 단위: 밀리초

위젯 3: 정상 서버 수

  1. 위젯 추가숫자 선택
  2. 메트릭: ApplicationELB → HealthyHostCount
  3. LoadBalancer: webapp-alb 선택
  4. 통계: 평균
  5. 위젯 제목: 정상 서버 수

3단계: EC2 모니터링 위젯 추가

위젯 4: Web 서버 CPU

  1. 위젯 추가선 그래프 선택
  2. 메트릭: EC2 → 인스턴스별 → CPUUtilization
  3. Auto Scaling으로 생성된 Web 서버들 모두 선택
  4. 통계: 평균
  5. 위젯 제목: Web 서버 CPU 사용률

위젯 5: WAS 서버 모니터링

  1. 위젯 추가선 그래프 선택
  2. 메트릭: EC2 → CPUUtilization
  3. WAS 서버 인스턴스 선택
  4. 위젯 제목: WAS 서버 CPU 사용률

4단계: RDS 모니터링 위젯 추가

위젯 6: 데이터베이스 연결 수

  1. 위젯 추가선 그래프 선택
  2. 메트릭: RDS → 데이터베이스별 → DatabaseConnections
  3. MySQL 인스턴스 선택
  4. 위젯 제목: DB 연결 수

위젯 7: 데이터베이스 지연시간

  1. 위젯 추가선 그래프 선택
  2. 메트릭: RDS → ReadLatency, WriteLatency 모두 추가
  3. 위젯 제목: DB 응답 지연시간

5단계: 핵심 알람 설정

알람 1: Web 서버 고CPU 사용률

  1. CloudWatch알람알람 생성
  2. 메트릭 선택: EC2 → CPUUtilization (Web 서버들)
  3. 조건:
    • 임계값: 80%
    • 기간: 5분간 연속
  4. 알람 이름: WebServer-HighCPU
  5. 알람 설명: Web 서버 CPU가 80%를 초과함

알람 2: 모든 서버 다운

  1. 메트릭: ApplicationELB → HealthyHostCount
  2. 조건: 1보다 작음 (정상 서버 0대)
  3. 알람 이름: CRITICAL-AllServersDown
  4. 우선순위: 높음

알람 3: 높은 DB 연결 수

  1. 메트릭: RDS → DatabaseConnections
  2. 조건: 20보다 큼
  3. 알람 이름: RDS-HighConnections

알람 4: 높은 응답 시간

  1. 메트릭: ApplicationELB → TargetResponseTime
  2. 조건: 1초(1000ms)보다 큼
  3. 알람 이름: ALB-SlowResponse

6단계: 대시보드 최적화

시간 범위 설정

  1. 대시보드 우상단에서 시간 범위 설정
  2. 지난 1시간 또는 지난 3시간 선택
  3. 자동 새로고침: 1분 또는 5분 설정

위젯 배치 조정

권장 배치:

1행: [ ALB 요청수 ] [ 응답시간 ] [ 정상서버수 ]
2행: [ Web CPU ]    [ WAS CPU ]  [ RDS CPU ]
3행: [ DB 연결수 ]  [ DB 지연 ]  [ 에러율 ]

컬러 테마 적용

7단계: 모니터링 동작 확인

부하 테스트

Web 서버에 부하 생성:

# Web 서버에 SSH 접속
ssh -i webapp-keypair.pem ec2-user@Web서버-Public-IP

# CPU 부하 생성 (5분간)
stress --cpu 2 --timeout 300s

대시보드에서 확인

  1. CPU 사용률이 증가하는지 확인
  2. ALB 응답시간이 증가하는지 확인
  3. 5분 후 알람이 발생하는지 확인

웹사이트 부하 테스트

# 동시 요청으로 부하 생성
for i in {1..20}; do
  curl -s http://ALB-DNS-Name/webapp/ > /dev/null &
done
wait

대시보드에서 확인:

완료 체크리스트

대시보드 구성

알람 설정

동작 확인

문제 해결

메트릭이 표시되지 않을 때

확인사항:

  1. 시간 범위: 최근 1시간으로 설정
  2. 리소스 선택: 올바른 인스턴스/로드밸런서 선택
  3. 권한 확인: CloudWatch 읽기 권한 확인

알람이 발생하지 않을 때

확인사항:

  1. 메트릭 값: 실제로 임계값을 초과했는지 확인
  2. 평가 기간: 5분간 지속적으로 초과해야 함
  3. 데이터 포인트: "5분 중 3분" 등 조건 확인

모니터링 운영 가이드

일일 확인사항

매일 아침 체크:

  1. 대시보드에서 전날 밤 이상사항 확인
  2. 발생한 알람 검토
  3. 성능 트렌드 분석

주간 리뷰

매주 검토사항:

  1. 평균 응답시간 트렌드
  2. CPU 사용률 패턴
  3. DB 연결 수 변화
  4. 알람 임계값 적정성

CloudWatch 대시보드 구축 완료

축하합니다! 이제 웹 서비스의 모든 상태를 한 눈에 볼 수 있고, 문제가 발생하기 전에 미리 알 수 있는 체계가 완성되었습니다.

다음 단계: AWS EDU/Archive/조선대학교 AWS 멘토링/Week4-Operations-and-Optimization/02-비용분석및최적화/01-Cost-Explorer-분석에서 비용 구조를 분석하고 최적화해보겠습니다.


관련 문서: AWS EDU/Archive/조선대학교 AWS 멘토링/Week4-Operations-and-Optimization/README, AWS EDU/Archive/조선대학교 AWS 멘토링/Week4-Operations-and-Optimization/02-비용분석및최적화/01-Cost-Explorer-분석